home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 December / PCWorld_2004-12_cd.bin / software / temacd / tiny / tf6pro-6[1].0.140.exe / Tiny Firewall Pro 6.0.msi / labellist.js < prev    next >
Encoding:
JavaScript  |  2004-08-06  |  5.8 KB  |  197 lines

  1. /*//////////////////////////////////////////////////////////////////////
  2. filename:         labellist.js
  3. copyright(c):     2002, 2003 Tiny Software Inc (http://www.tinysoftware.com)
  4. author:         Martin Navratil (mnavratil@tinysoftware.com)
  5. product:         Tiny Personal Firewall 5.x
  6. description:     javascript helper functions for listing applications in combo boxes etc.
  7. ///////////////////////////////////////////////////////////////////////*/
  8.  
  9.  var    HTML_SELECT_HEADER = '<SELECT ',
  10.     HTML_SELECT_TRAILER = '></SELECT>',
  11.     HTML_OPTION_HEADER = '<OPTION value="',
  12.     HTML_OPTION_TRAILER = '</OPTION>';
  13.  
  14. var STR_ALL_NONSYSTEM = 'All (Non System)',
  15.     STR_ALL_SYSTEM = 'All (System)',
  16.     STR_ALL = 'All';
  17.     
  18. var    AT_LABEL = 0,
  19.     AT_DEFINITION = 1;
  20.     
  21. var RA_USER = 0,
  22.     RA_SYSTEM = RA_USER + 1,
  23.     RA_BOTH = RA_SYSTEM + 1;
  24.     
  25.     
  26. function AddAllLabels(list, arrLabelTypes, arrLabelAccounts, strAppSelected, account)
  27. {
  28.     var strLabelList = "";
  29.     list.moveFirst();
  30.     var arrLabels = new Array();
  31.        while (!list.atEnd())
  32.        {
  33.         var listItem = list.item().LabelID;
  34.         var bIsSystem = false;
  35.         if (arrLabelAccounts[listItem])
  36.             bIsSystem = arrLabelAccounts[listItem];
  37.         if (bIsSystem == account || RA_BOTH == account)
  38.             arrLabels[arrLabels.length] = listItem;
  39.         arrLabelTypes[listItem] = AT_LABEL;
  40.           list.moveNext();
  41.        }
  42.     arrLabels.sort();
  43.     var i = 0;
  44.        for (i = 0; i < arrLabels.length; i++)
  45.        {
  46.         //add option to array
  47.  
  48.         var label = arrLabels[i];
  49.         strLabelList += HTML_OPTION_HEADER + label + '"';
  50.         if (label == strAppSelected)
  51.             strLabelList += ' selected';
  52.         strLabelList += '>' + label + HTML_OPTION_TRAILER;
  53.        }
  54.     return strLabelList;
  55. }
  56.  
  57. function SetLabelAccounts(strGroupID, arrLabelAccounts, iIsSystem)
  58. {
  59.     var Groups = null;
  60.     Groups = ServerAppParser.AppGroupList;
  61.     if (null == Groups)
  62.         return;
  63.     var Group = null;
  64.     try
  65.     {
  66.         Group = Groups.Get(strGroupID);
  67.     }
  68.     catch (e)
  69.     {
  70.         return;
  71.     }
  72.     if (null != Group)
  73.     {
  74.         var Labels = null;
  75.         Labels = Group.LabelList;
  76.         if (null == Labels)
  77.             return;
  78.         var enLabels = new Enumerator(Labels);
  79.         enLabels.moveFirst();
  80.         while (!enLabels.atEnd())
  81.         {
  82.             var strLabelID = enLabels.item().Content;
  83.             if (arrLabelAccounts[strLabelID] != 0)
  84.                 arrLabelAccounts[strLabelID] = iIsSystem;
  85.             enLabels.moveNext();
  86.         }
  87.     }
  88. }
  89.  
  90. function AddAllGroups(list, arrLabelTypes, arrLabelAccounts, strAppSelected, account)
  91. {
  92.     var strGrList = "";
  93.     list.moveFirst();
  94.     var arrGroups = new Array();
  95.     while (!list.atEnd())
  96.     {
  97.         var listItem = list.item().AppGroupID;
  98.         if (!listItem)
  99.             listItem = list.item().DllGroupID;
  100.         var strPrefix = listItem.substr(0, 1);
  101.         var bIsSystem = (strPrefix == "$") ? 1 : 0;
  102.         if (arrLabelAccounts)
  103.                 SetLabelAccounts(listItem, arrLabelAccounts, bIsSystem);
  104.         if (bIsSystem && RA_SYSTEM == account || !bIsSystem && RA_USER == account || RA_BOTH == account)
  105.             arrGroups[arrGroups.length] = listItem;
  106.         if (arrLabelTypes)
  107.             arrLabelTypes[listItem] = AT_DEFINITION;
  108.           list.moveNext();
  109.     }
  110.     arrGroups.sort();
  111.     var i = 0;
  112.        for (i = 0; i < arrGroups.length; i++)
  113.        {
  114.         //add option to array
  115.         var id = arrGroups[i];
  116.         var strGroupOption = HTML_OPTION_HEADER + id + '"';
  117.         if (id == strAppSelected)
  118.             strGroupOption += ' selected';
  119.         strGroupOption +=  '>' + id + HTML_OPTION_TRAILER;
  120.         strGrList += strGroupOption;
  121.        }
  122.     return strGrList;
  123. }
  124.  
  125. function AddAsterisk(strSelectedLabel, account, arrLabelTypes, strAppSelected)
  126. {
  127.     var ret = HTML_OPTION_HEADER + '*"';
  128.     if (strSelectedLabel == "*")
  129.         ret += ' selected';
  130.     var strAsterisk;
  131.     switch (account)
  132.     {
  133.     case RA_USER:
  134.         strAsterisk = STR_ALL_NONSYSTEM;
  135.         break;
  136.     case RA_SYSTEM:
  137.         strAsterisk = STR_ALL_SYSTEM;
  138.         break;
  139.     case RA_BOTH:
  140.     default:
  141.         strAsterisk = STR_ALL;
  142.     }
  143.     ret += '>' + strAsterisk + HTML_OPTION_TRAILER;
  144.     arrLabelTypes["*"]  = AT_LABEL;
  145.     return ret;
  146. }
  147.  
  148. function GenerateLabelList(prio, account, strSelectedLabel)
  149. {
  150.     arrLabelTypes = new Array();
  151.     var arrLabelAccounts = new Array();
  152.  
  153.     strLabelList =     AddAsterisk(strSelectedLabel, account, arrLabelTypes, strSelectedLabel);
  154.     strLabelList += AddAllGroups(new Enumerator(ServerAppParser.AppGroupList), arrLabelTypes, arrLabelAccounts, strSelectedLabel, account);
  155.     strLabelList += AddAllLabels(new Enumerator(ServerAppParser.LabelList), arrLabelTypes, arrLabelAccounts, strSelectedLabel, account);
  156.     if (ClientAppParser != null && prio == PRIOR_NORMAL)
  157.     {
  158.         strLabelList += AddAllGroups(new Enumerator(ClientAppParser.AppGroupList), arrLabelTypes, arrLabelAccounts, strSelectedLabel, account);
  159.         strLabelList += AddAllLabels(new Enumerator(ClientAppParser.LabelList), arrLabelTypes, arrLabelAccounts, strSelectedLabel, account);
  160.     }
  161.     return strLabelList;    
  162.  
  163. }
  164.  
  165. function GetLabelListHtmlStr(prio, account, id, strSelectedLabel, index)
  166. {
  167.     var str = HTML_SELECT_HEADER + 'id="' + id + '" ' +
  168.             'OnChange="OnAppChange(' + prio + ',this,' + index + ', this.value);">' 
  169.             + GenerateLabelList(prio, account, strSelectedLabel) + HTML_SELECT_TRAILER;
  170.     return str;
  171. }
  172.  
  173. function GenerateDllGroupList(prio, account, strSelectedLabel)
  174. {
  175.     var strLabelList =     '<OPTION value=""';
  176.     if (strSelectedLabel == '')
  177.         strLabelList += ' selected';
  178.     strLabelList += '><None></OPTION>';
  179.     strLabelList += AddAllGroups(new Enumerator(ServerAppParser.DllGroupList), null, null, strSelectedLabel, account);
  180.     if (ClientAppParser != null && prio == PRIOR_NORMAL)
  181.     {
  182.         strLabelList += AddAllGroups(new Enumerator(ClientAppParser.DllGroupList), arrLabelTypes, strSelectedLabel, account);
  183.     }
  184.     return strLabelList;    
  185.  
  186. }
  187.  
  188. function GetDllGroupListHtmlStr(prio, account, id, strSelectedLabel, index, strDisabled)
  189. {
  190.     var str = HTML_SELECT_HEADER + 'id="' + id + '" ' + strDisabled +
  191.             ' OnChange="OnDllGroupChange(' + prio + ',this,' + index + ', this.value);">' 
  192.             + GenerateDllGroupList(prio, account, strSelectedLabel) + HTML_SELECT_TRAILER;
  193.     return str;
  194. }
  195.  
  196.  
  197.